/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.opt.detailcampagne.services.impl;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import fr.generali.accueilclient.commun.exception.AccueilClientBusinessException;
import fr.generali.accueilclient.opt.detailcampagne.om.ICampagneDetailCamp;
import fr.generali.accueilclient.opt.detailcampagne.om.ICritereEntreeDetailCamp;
import fr.generali.accueilclient.opt.detailcampagne.services.IDetailCampagneService;
import fr.generali.relationclient.marketing.opt.detailcampagne.services.CampagneWSBusinessException;
import fr.generali.relationclient.marketing.opt.detailcampagne.services.CampagneWSTechnicalException;
import fr.generali.relationclient.marketing.opt.detailcampagne.DtoCampagne;
import fr.generali.relationclient.marketing.opt.detailcampagne.services.IDetailCampagneWebService;

/**
 * @author Holmes Kelly
 *
 */
@Service("detailCampagneService")
public class DetailCampagneService implements IDetailCampagneService {

    /**
     * LOGGER
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(DetailCampagneService.class);

    /**
     * Appel mapper contenant les assembler
     */
    @Autowired
    @Qualifier("detailCampagneMapper")
    private DetailCampagneMapper detailCampagneMapper;

    /**
     * Appel web service DetailCampagneWebService
     */
    @Autowired
    @Qualifier("detailCampagneWebService")
    private IDetailCampagneWebService detailCampagneWebService;

    /**
     * {@inheritDoc}
     */
    public ICampagneDetailCamp consulterDetailCampagne(ICritereEntreeDetailCamp critereEntree) 
        throws AccueilClientBusinessException {

        ICampagneDetailCamp campagne = null;

        if (critereEntree != null) {

            try {

                final DtoCampagne dtoCampagne =
                                detailCampagneWebService.consulterDetailCampagne(detailCampagneMapper
                                                .mapperCritereEntree2DtoCritereEntree(critereEntree));

                if (dtoCampagne != null) {

                    campagne = detailCampagneMapper.mapperDtoCampagne2ICampagne(dtoCampagne);
                }

            } catch (CampagneWSBusinessException e) {

                LOGGER.debug(e.getMessage());

                throw new AccueilClientBusinessException(e.getMessage(), e);

            } catch (CampagneWSTechnicalException e) {

                LOGGER.debug(e.getMessage());
            }
        }

        return campagne;
    }

}
